寫了這麼多小程式,甚至也自己打包了成 Package 了,那 Go 有提供自動化測試的方法嗎?測試程式是否正常?讓我們一起來看看 Go 的測試方法。
測試
我們這邊拿 An Introduction to Programming in Go 中的範例來舉例,首先我們先寫一個簡單的 Package 來看看:
package math
func Average(xs []float64) float64 {
total := float64(0)
for _, x := range xs {
total += x
}
return total / float64(len(xs))
}
這個很簡單,這裡簡單建立一個叫 math 的 Package,這是一個簡單算平均的 Package,將讀取進來的浮點數陣列一個一個用 for 讀取進來累加,然後在返回總和除總數的結果。
package math
import "testing"
func TestAverage(t *testing.T) {
var v float64
v = Average([]float64{1,2})
if v != 1.5 {
t.Error("Expected 1.5, got", v)
}
}
然後我們來寫另外一個檔案,這個是測試的寫法,建議檔名取 math_test.go,因為前面的 Package 取名叫做 math.go 。
一開始先宣告測試用的變數 t,然後引用 Average 函數將 1,2 拿進去計算,如果答案不對利用 t 返回錯誤,使用起來相當的直覺。